/*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
* Consumer of Etw events logged in a *.etl file 
*/
#pragma once
#include "EtwProcessor.h"
#include "EtwConsumer.h"

// Suppress warning 4481: nonstandard extension used: override specifier 'override'
#pragma warning(push)
#pragma warning(disable: 4481)

namespace Etw { namespace Processor
{
    class ETWPROCESSOR_API EtwFileConsumer : public EtwConsumer
    {
    public:
        
        EtwFileConsumer(const wchar_t* pszFileName);
        ~EtwFileConsumer();

        #ifdef ETWPROCESSOR_FULL_BUILD
        EtwFileConsumer(const __wchar_t* pszFileName);
        #endif

        virtual HRESULT OpenTrace() override;
        
    private:
        EtwFileConsumer(const EtwFileConsumer&);//not implemented
        EtwFileConsumer& operator=(const EtwFileConsumer&);//not implemented
      
        struct EtwFileImpl;
        EtwFileImpl* m_pImpl;
    };
}/* namespace Processor */ } /* namespace Etw */

#pragma warning(pop)
